package com.candoit.webapps.pricing.model;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

@Entity
@Table(name = "linea")
public class Linea implements Serializable {
	
	private static final long serialVersionUID = -3389483357049712703L;
	
	public static final Integer LUNA = 1;
	public static final Integer ACUARIO = 2;
	public static final Integer TIERRA = 5;
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "id")
	private Integer id;
	
	@Column(name = "nombre")
	private String nombre;
	
	@ManyToOne
	@JoinColumn(name="id_tipo_linea", referencedColumnName="id")
	private TipoLinea tipoLinea;
	
	@Column(name = "inicial")
	private String inicial;
	
	@Column(name = "activo")
	private boolean activo;
	
	@Transient
	private String activoMsg;
	
	@ManyToMany
	@JoinTable(name="linea_mp",
	  			joinColumns=
	  					@JoinColumn(name="id_linea", referencedColumnName="id"),
	  					inverseJoinColumns=@JoinColumn(name="id_mp", referencedColumnName="id")
	        	)
	private List<MateriaPrima> materias;
	
	@Column(name = "rentabilidad")
	private Double rentabilidad = 0.00d;
	
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public TipoLinea getTipoLinea() {
		return tipoLinea;
	}

	public void setTipoLinea(TipoLinea tipoLinea) {
		this.tipoLinea = tipoLinea;
	}

	public String getInicial() {
		return inicial;
	}

	public void setInicial(String inicial) {
		this.inicial = inicial;
	}

	public boolean isActivo() {
		return activo;
	}

	public void setActivo(boolean activo) {
		this.activo = activo;
	}
	
	public List<MateriaPrima> getMaterias() {
		return materias;
	}

	public void setMaterias(List<MateriaPrima> materias) {
		this.materias = materias;
	}

	public String getActivoMsg() {
		if (activo){
			return "Si";
		}else{
			return "No";
		}
	}

	public void setActivoMsg(String activoMsg) {
		this.activoMsg = activoMsg;
	}
	
	public Double getRentabilidad() {
		return rentabilidad;
	}

	public void setRentabilidad(Double rentabilidad) {
		this.rentabilidad = rentabilidad;
	}

	@Override
	public boolean equals(Object obj) {
		if (obj instanceof Linea && ((Linea)obj).getId().equals(this.id)){
			return true;
		}
		return false;
	}
	
	@Override
	public String toString(){
		return this.nombre;
	}

}
